home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d3 / wf200_c.arc / WF.017 < prev    next >
Text File  |  1990-08-30  |  16KB  |  430 lines

  1. .f3                              - # -              Chapter 17 - Mail Merge
  2. .rm70
  3. .mt5
  4. .mb5
  5. .pl66
  6. .tc
  7. .tc 17. MAIL MERGE ........................................#
  8. 17. MAIL MERGE
  9.  
  10. Mail Merge, or Merge Printing, is the process of inserting information
  11. into a document while it is being printed. The document is often
  12. printed several times with different information. The most common use
  13. of merge printing is to merge mailing list information into a form
  14. letter or mailing labels. Other applications include invoices,
  15. reports, and any other standard document that requires you to fill in
  16. blanks.
  17.  
  18. To merge print you need to create the form or template document (also
  19. called the master document). You usually need a data file as well. You
  20. then print the master document using the background print command Ctrl
  21. K P. Word fugue will obey the mail merge dot commands, and insert
  22. information in place of variables in your master document. If you are
  23. using a data file, a copy of the document will be produced for each
  24. set of information in the data file.
  25.  
  26. A master document contains the text of the document and the
  27. instructions for how the documents are to be produced. These
  28. instructions include variables and special merge print dot commands.
  29. An example would be a form letter and a data file of names and
  30. addresses.
  31.  
  32. .tc    Variables ..........................................#
  33. Variables
  34.  
  35. A variable is information that changes from one copy of the document
  36. to another. When you merge print, Word Fugue inserts information for
  37. each variable into each copy. This information can come from a data
  38. file, or you can be prompted for it when you print.
  39.  
  40. Each variable has a name, and you place the name of the variable into
  41. the master document wherever information is to be inserted. The actual
  42. information inserted in place of the variable is called data.
  43.  
  44. A variable name can contain up to 20 characters. You can use uppercase
  45. and lowercase letters interchangeably. You can make a name more
  46. readable by using hyphens (-) or underscores (_) to join words in the
  47. variable name.
  48.  
  49. Where you want to insert variable data, type the variable name between
  50. ampersands (&) in the text of the document:
  51.  
  52.    &person-name&                         Fred Nurk
  53.    &ADDress_1&                           The street
  54.    &city&, &state& &postcode&            Erehwon, XYZ 9000
  55.  
  56. .tc    Merge Print Dot Commands ...........................#
  57. Merge Print Dot Commands
  58.  
  59. You type dot commands in the master document to tell Word Fugue the
  60. variable names and where to get the data that goes into them. If you
  61. do not obtain data for a variable name, Word Fugue will print the name
  62. instead. You cannot use a piece of data which is longer than 80
  63. characters. The total amount of data to be merged is limited by the
  64. memory available on your PC.
  65.  
  66. The following dot commands are available:
  67.  
  68.                 .DF filename delim
  69.                 .RV variable list
  70.                 .AV prompt,variable
  71.                 .SV variable=value
  72.                 .MA variable=equation
  73.                 .DM message
  74.                 .GO go to top of file and start again
  75.                 .WS Y or N for Wordstar compatible variable
  76.                     replacement
  77.  
  78. The .DF command defines the data file containing the variables to be
  79. merged into the text. If you follow the filename by at least one
  80. blank and another character, then that character is used as a
  81. delimiter instead of a comma
  82.  
  83.         eg .DF names.dat /
  84.  
  85. means that the file NAMES.DAT contains the variables to be read, and
  86. that the separator between variables is a slash (/). The default is
  87. comma (,).
  88.  
  89. The .RV command defines the variables to be found on a single line of
  90. the data file. You can have more that one .RV to define different
  91. lines of your master document. If a line of the data file is exhausted
  92. before all the variables are read, the remainder are set to blank.
  93.  
  94.         eg .RV name,address1,address2
  95.  
  96. means that each line of the file will look like this:
  97.  
  98.         Joe Blogs,17 West street,Newtown DG 9999
  99.  
  100. If you want to leave a variable blank, then leave it out:
  101.  
  102.         Joe Blogs,,Newtown Post Office DG 9999
  103.  
  104. You can use a different separator, as defined on the .DF line, and put
  105. different variables on different lines:
  106.  
  107.         .DF names.dat /
  108.         .rv name,address1
  109.         .rv address2
  110.  
  111. Your file would then look like this:
  112.  
  113.         Joe Blogs/17 Westside Ave.,
  114.         Newtown DG 9999
  115.  
  116. .cp7
  117. The .AV line will prompt you to enter the contents of the variable.
  118. You can inlude an optional prompt:
  119.  
  120.         .AV Address1
  121.  
  122. will display   ADDRESS1?  and open a window for you to enter the
  123. value.
  124.  
  125.         .AV Enter the address,address1
  126.  
  127. will display  Enter the address  and open a window for you to enter
  128. the value.
  129.  
  130. The .SV line sets the variable to the value:
  131.  
  132.         .SV vara,this is the value for variable A
  133.         .SV addr= This is the address
  134.  
  135. You can use either comma (,) or equals sign (=). Leading spaces in the
  136. variable are ignored. If you want to include leading spaces, you
  137. should enclose the data within single or double quotes. If you start
  138. with a single quote, you must end with a single quote, and vice
  139. versa:
  140.  
  141.         .SV company= "   Fugue Software  "
  142.  
  143. The .MA line allows you to compute values and store them in another
  144. variable:
  145.  
  146.         .MA VARB=25*10
  147.         .MA varc= &vara&+&varb&
  148.         .MA total_price,&price&*(1-&discount&) * &qty&
  149.  
  150. The text within the '&' are other variables that will be replaced
  151. before the calculation is done. You can use any functions and
  152. operators that are provided by the pop up calculator.
  153.  
  154.  
  155. The .DM line will display the following message. You can include
  156. variables which will be substituted before the message is displayed.
  157.  
  158.         .RV varb
  159.         .DM message is varb = &varb&
  160.  
  161. will display
  162.  
  163.        message is varb = the value of variable b
  164.  
  165. The .GO is used to exit from the current print and go back to the top
  166. of the file (assuming that there are more records to be printed)
  167.  
  168. .cp8
  169. The .WS is used to determine how variables in the text are replaced.
  170. You can set Y or N. The default is Y. All variables must be embedded
  171. within &s to be recognized and replaced. With the default, this is all
  172. that is needed:
  173.  
  174.                 &address1&
  175.                 &address2&
  176.  
  177. Setting .WS to N will mean that the variables within the text body
  178. must also be embedded inside print control brackets:
  179.  
  180.                 {.&address1&}
  181.                 {.&address2&}
  182.  
  183. .tc    Merge Printing Conditional Commands ................#
  184. Merge Printing Conditional Commands
  185.  
  186. Additional printing commands for evaluating conditional expressions
  187. and controlling the text that is printed.
  188.  
  189.                 .IF condition           is the IF condition
  190.                 .EL                     is the else
  191.                 .EI                     ends the IF expression.
  192.  
  193. You must have an .EI for every .IF, but you do not need to have .EL
  194. (else). The lines following the .IF are evaluated if the .IF were
  195. true, while the lines following the .EL are evaluated if the condition
  196. were false.
  197.  
  198. .tc      The IF Condition .................................#
  199. The IF Condition
  200.  
  201. Whether a condition is true is usually determined by comparing one
  202. item with another. If an item can be considered numeric (ie it
  203. consists only of digits), it is converted to a number before the
  204. comparison is done. Otherwise the comparison is done as text. The
  205. following comparisons are available:
  206.  
  207.         Operator        Meaning
  208.  
  209.         =               is the same as
  210.         <               is numerically less than or
  211.                         comes alphabetically before
  212.         >               is numerically greater than
  213.                         or comes alphabetically after
  214.         <=              is less than or equal to
  215.         >=              is greater than or equal to
  216.         <>              is not equal or not the same
  217.  
  218. The most common way to specify a condition to be evaluated is
  219.  
  220.         .IF item1 operator item2
  221.  
  222. .cp6
  223. For example, you can compare a merge print variable to a constant (a
  224. word, phrase or number that does not change) or to another merge print
  225. variable:
  226.  
  227.         .IF &pet& = dog
  228.         .IF &pet& = &pet_2&
  229.         .if &amt& = 12.35
  230.  
  231. In the first case, the condition is true if the value of the variable
  232. PET is dog. Note that uppercase and lower case are significant. In the
  233. second case, the condition is true if the value of the first variable
  234. is equal to the second variable. In the third case, the condition is
  235. true if the value of the variable is numerically equal to 12.35.
  236.  
  237. With strings of text, you should enclose them in quotes if leading or
  238. trailing spaces are significant. For 2 text items to be considered the
  239. same (=), they must consist of exactly the same characters.
  240.  
  241.         .IF "&pet&" = "    dog"
  242.         .if "&pet&" = "    dog's"
  243.  
  244. mean that the value of the variable PET must have 4 leading spaces.
  245.  
  246. Words are considered in alphabetic order, so that the following are
  247. true:
  248.  
  249.         .if cat < catalog
  250.         .IF catalog     >     cat
  251.  
  252. since cat comes before catalog in the dictionary.
  253.  
  254. In alphabetic order numbers come before letters. Note that the first
  255. variable determines the type of comparison. Text that cannot be
  256. converted to numbers for a numeric comparison is considered to be
  257. zero:
  258.  
  259.         .if 2<apple
  260.  
  261. is FALSE since 2 determines that the comparison will be numeric, and
  262. apple converts to the number 0. Whereas:
  263.  
  264.         .if apple>2
  265.  
  266. is TRUE, since apple is alphabetically after 2.
  267.  
  268. You can also use the .if command with just one variable name, in which
  269. case the condition is true if the variable is not zero or blank.
  270.  
  271.         .if &pet&
  272.  
  273. will be true if the variable PET contains a non zero non blank value.
  274.  
  275. .cp6
  276. .tc        Complex Conditions .............................#
  277. Complex Conditions
  278.  
  279. You can use mathematical equations on either side of the relational
  280. operator, and can join conditions together by using AND and OR. The
  281. following additional operators are available:
  282.  
  283.         AND             true and true => true
  284.                         anything else => false
  285.         OR              false and false => false
  286.                         anything else   => true
  287.  
  288.         XOR             true xor false  => true
  289.                         false xor true  => true
  290.                         true xor true   => false
  291.                         false xor false => false
  292.  
  293.         NOT             not true        => false
  294.                         not false       => true
  295.  
  296. .cp5
  297. You should use brackets to group parts of the condition for easier
  298. understanding:
  299.  
  300.     .IF (&PET& = dog) and (&pet2& = cat)
  301.     .IF ((&pet& = dog) or (&pet& = cat)) and (&income& > 25000)
  302.  
  303. .tc      The End If .......................................#
  304. The End If
  305.  
  306. The .IF dot command is followed by the commands and text to be done if
  307. the condition is true. You must signify to Word Fugue where the text
  308. finishes, so the program knows where to start again if the condition
  309. is false. You indicate this by using the dot command .EI (End If)
  310.  
  311. Almost anything can come between a .IF and its corresponding .EI. This
  312. can include text or other dot commands:
  313.  
  314.         .IF (&debt_age& > 30) and (&debt_age& < 60)
  315.         According to our records, you account is overdue. Maybe you
  316.         have overlooked our invoice. Could you please pay $&amt& as
  317.         soon as possible? If you have paid in the last few days,
  318.         please disregard this warning.
  319.         .EI
  320.         .if (&debt_age&>=60)
  321.         .fi nasty.doc
  322.         .ei
  323.  
  324. In this example, if a debt is between 30 and 60 days old, a warning is
  325. printed. If it is 60 days or more overdue, a stringer message is
  326. printed. If it is under 30 days, no message is printed.
  327.  
  328. .cp9
  329. .tc      The Else Condition ...............................#
  330. The Else Condition
  331.  
  332. The else condition says what action to take if the corresponding IF
  333. were false. The phrase ELSE is represented by the dot command .EL.
  334. The previous example could be redone as:
  335.  
  336.         .if (&debt_age&>=60)
  337.         .fi nasty.doc
  338.         .el
  339.         According to our records, you account is overdue. Maybe you
  340.         have overlooked our invoice. Could you please pay $&amt& as
  341.         soon as possible? If you have paid in the last few days,
  342.         please disregard this warning.
  343.         .EI
  344.  
  345. You should note a subtle difference here. In the first example, a debt
  346. could be under 30 days, and no message would be printed. In this
  347. example, all debts are assumed to be overdue, so a warning will always
  348. be printed if the debt is under 60 days old.
  349.  
  350. .tc      Nested Ifs .......................................#
  351. Nested Ifs
  352.  
  353. You can use conditional print commands and have Word Fugue choose
  354. among three or more alternatives by nesting the commands. For example,
  355. you may want to have different text for debts that are over 90 days,
  356. over 60 days, and over 30 days, as well as not printing a warning if
  357. they are less than 30 days. You could set up individual IFs as in the
  358. first example, and each IF must be phrased in such a way as to exclude
  359. all the other conditions. (This is why we tested > 30 days and < 60
  360. days). Alternatively, you could separate each condition by ELSEs, and
  361. simplify the conditions:
  362.  
  363.   If the debt is more than 90 days old, insert SOLICITR.DOC, otherwise
  364.   if the debt is more than 60 days old, insert NASTY.DOC, or else if
  365.   the debt is more than 30 days old print a warning, or if the debt is
  366.   less than 2 days old, offer a discount for prompt payment:
  367.  
  368.     ┌───.IF &debt_age& > 90
  369.     │   .fi solicitr.doc
  370.     │   .el
  371.     │┌──.if &debt_age& > 60
  372.     ││  .fi nasty.doc
  373.     ││  .el
  374.     ││┌─.if &debt_age& > 30
  375.     │││ .fi warning.doc
  376.     │││ .el
  377.     │││┌.if &debt_age& < 2
  378.     ││││.fi discount.doc
  379.     │││└.ei
  380.     ││└─.ei
  381.     │└──.ei
  382.     └───.ei
  383.  
  384. Every .IF must have a corresponding .EI command. There are 4 IFs so
  385. there must be 4 EIs. The lines shown link up the IFs with their
  386. corresponding EIs.
  387.  
  388. .tc      Command Files ....................................#
  389. Command Files
  390.  
  391. A command file is a file that contains only (or mainly) dot commands.
  392. Command files can be very useful for controlling merge printing or for
  393. chaining together the chapters of a large document by use of the .FI
  394. file include command:
  395.  
  396.   Example 1
  397.  
  398.         .FI letter.txt
  399.         .pa
  400.         .fi proposal.doc
  401.         .pa
  402.         .fi specs.doc
  403.  
  404.   Example 2
  405.  
  406.         .DF names.txt
  407.         .RV first_name,last_name
  408.         .RV address_1
  409.         .RV address_2
  410.         .RV city,state,postcode
  411.         .if &postcode&<2000
  412.         .fi special.doc
  413.         .el
  414.         .if (&postcode&=2620) and (&city& = Queanbeyan)
  415.         .sv state = NSW
  416.         .ei
  417.         .fi normal1.doc
  418.         .if (&postcode&>=2000) and (&postcode& <=2110)
  419.         .fi offer.doc
  420.         .ei
  421.         .ei
  422.  
  423. This document reads a data file called NAMES.TXT, and prints a special
  424. letter if the postcode is less than 2000. Otherwise, it ensures that
  425. all Queanbeyan addresses with postcode 2620 have the state set to NSW
  426. and not ACT. (The postcode 2620 is allocated to parts of ACT and NSW
  427. as well). It then prints a normal letter to these people. If they live
  428. in areas around Sydney (postcode 2000 to 2110), it also prints a
  429. special offer.
  430.